#ifndef __LINK_LIST_H
#define __LINK_LIST_H

typedef struct user_link_list_element_t {
    int value;
}user_link_list_element_t;

typedef struct LNode {
    user_link_list_element_t data;
    struct LNode *next;
}LNode, link_list_t;

typedef enum {
    FAIL = 0,
    OK,
}status;

status LinkList_Init(link_list_t *list);
status LinkList_Deinit(link_list_t *list);
status LinkList_GetElement(link_list_t *list, unsigned int index, user_link_list_element_t *element);
link_list_t *LinkList_LocateElement(link_list_t *list, user_link_list_element_t element);
status LinkList_Insert(link_list_t *list, unsigned int index, user_link_list_element_t element);
status LinkList_Delete(link_list_t *list, unsigned int index);
void LinkList_Create2Front(link_list_t *list, unsigned int number);
void LinkList_Create2Back(link_list_t *list, unsigned int number);

void LinkList_Test(void);

#endif
